home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / edit / elv18src.zip / curses.h < prev    next >
C/C++ Source or Header  |  1994-01-10  |  12KB  |  367 lines

  1. /* curses.h */
  2.  
  3. /* Author:
  4.  *    Steve Kirkendall
  5.  *    14407 SW Teal Blvd. #C
  6.  *    Beaverton, OR 97005
  7.  *    kirkenda@cs.pdx.edu
  8.  */
  9.  
  10.  
  11. /* This is the header file for a small, fast, fake curses package */
  12.  
  13. /* termcap stuff */
  14. extern char    *tgoto P_((char *, int, int));
  15. extern char    *tgetstr P_((char*, char**));
  16. extern void    tputs P_((char *, int, int (*)()));
  17.  
  18. #if MSDOS
  19. /* BIOS interface used instead of termcap for MS-DOS */
  20. extern int    vmode;
  21. extern void    v_up P_((void));
  22. extern void    v_cb P_((void));
  23. extern void    v_cs P_((void));
  24. extern void    v_ce P_((void));
  25. extern void    v_cl P_((void));
  26. extern void    v_cd P_((void));
  27. extern void    v_al P_((void));
  28. extern void    v_dl P_((void));
  29. extern void    v_sr P_((void));
  30. extern void    v_move P_((int, int));
  31. extern int    v_cols P_((void));
  32. extern int    v_rows P_((void));
  33. #endif
  34.  
  35. #if OS2
  36. extern void    v_sr P_((void));
  37. extern void    audible_beep P_((void));
  38. extern void    v_vio_init P_((void));
  39. extern void    v_vio_restore P_((void));
  40. extern void    v_cb P_((void));
  41. extern void    v_cs P_((void));
  42. #endif
  43.  
  44. /* faddch() is a function.  a pointer to it is passed to tputs() */
  45. extern int    faddch P_((int));
  46.  
  47. /* data types */
  48. #define WINDOW    char
  49.  
  50. /* CONSTANTS & SYMBOLS */
  51. #define TRUE        1
  52. #define FALSE        0
  53. #define A_NORMAL    0
  54. #define A_STANDOUT    1
  55. #define A_BOLD        2
  56. #define A_QUIT        3
  57. #define A_UNDERLINE    4
  58. #define A_ALTCHARSET    5
  59. #define A_POPUP        6
  60. #define A_VISIBLE    7
  61. #define KBSIZ        4096
  62.  
  63. /* figure out how many function keys we need to allow. */
  64. #ifndef NO_FKEY
  65. # ifdef NO_SHIFT_FKEY
  66. #  define    NFKEYS    10
  67. # else
  68. #  ifdef NO_CTRL_FKEY
  69. #   define    NFKEYS    20
  70. #  else
  71. #   ifdef NO_ALT_FKEY
  72. #    define    NFKEYS    30
  73. #   else
  74. #    define    NFKEYS    40
  75. #   endif
  76. #  endif
  77. # endif
  78. extern char    *FKEY[NFKEYS];    /* :k0=:...:k9=: codes sent by function keys */
  79. #endif
  80.  
  81. /* extern variables, defined in curses.c */
  82. extern char    *termtype;    /* name of terminal entry */
  83. extern short    ospeed;        /* tty speed, eg B2400 */
  84. #if OSK
  85. extern char PC_;    /* Pad char */
  86. extern char    *BC;    /* Backspace char string */
  87. #else
  88. extern char    PC;        /* Pad char */
  89. #endif
  90. extern WINDOW    *stdscr;    /* pointer into kbuf[] */
  91. extern WINDOW    kbuf[KBSIZ];    /* a very large output buffer */
  92. extern int    LINES;        /* :li#: number of rows */
  93. extern int    COLS;        /* :co#: number of columns */
  94. extern int    AM;        /* :am:  boolean: auto margins? */
  95. extern int    PT;        /* :pt:  boolean: physical tabs? */
  96. extern char    *VB;        /* :vb=: visible bell */
  97. extern char    *UP;        /* :up=: move cursor up */
  98. extern char    *SO;        /* :so=: standout start */
  99. extern char    *SE;        /* :se=: standout end */
  100. extern char    *US;        /* :us=: underline start */
  101. extern char    *UE;        /* :ue=: underline end */
  102. extern char    *MD;        /* :md=: bold start */
  103. extern char    *ME;        /* :me=: bold end */
  104. extern char    *AS;        /* :as=: alternate (italic) start */
  105. extern char    *AE;        /* :ae=: alternate (italic) end */
  106. #ifndef NO_VISIBLE
  107. extern char    *MV;        /* :mv=: "visible" selection start */
  108. #endif
  109. extern char    *CM;        /* :cm=: cursor movement */
  110. extern char    *CE;        /* :ce=: clear to end of line */
  111. extern char    *CD;        /* :cd=: clear to end of screen */
  112. extern char    *AL;        /* :al=: add a line */
  113. extern char    *DL;        /* :dl=: delete a line */
  114. #if OSK
  115. extern char    *SR_;        /* :sr=: scroll reverse */
  116. #else
  117. extern char    *SR;        /* :sr=: scroll reverse */
  118. #endif
  119. extern char    *KS;        /* :ks=: init string for cursor */
  120. extern char    *KE;        /* :ke=: restore string for cursor */
  121. extern char    *KU;        /* :ku=: sequence sent by up key */
  122. extern char    *KD;        /* :kd=: sequence sent by down key */
  123. extern char    *KL;        /* :kl=: sequence sent by left key */
  124. extern char    *KR;        /* :kr=: sequence sent by right key */
  125. extern char    *PU;        /* :PU=: key sequence sent by PgUp key */
  126. extern char    *PD;        /* :PD=: key sequence sent by PgDn key */
  127. extern char    *HM;        /* :HM=: key sequence sent by Home key */
  128. extern char    *EN;        /* :EN=: key sequence sent by End key */
  129. extern char    *KI;        /* :kI=: key sequence sent by Insert key */
  130. extern char    *kD;        /* :kD=: key sequence sent by Delete key */
  131. extern char    *IM;        /* :im=: insert mode start */
  132. extern char    *IC;        /* :ic=: insert following char */
  133. extern char    *EI;        /* :ei=: insert mode end */
  134. extern char    *DC;        /* :dc=: delete a character */
  135. extern char    *TI;        /* :ti=: terminal init */    /* GB */
  136. extern char    *TE;        /* :te=: terminal exit */    /* GB */
  137. #ifndef NO_CURSORSHAPE
  138. extern char    *CQ;        /* :cQ=: normal cursor */
  139. extern char    *CX;        /* :cX=: cursor used for EX command/entry */
  140. extern char    *CV;        /* :cV=: cursor used for VI command mode */
  141. extern char    *CI;        /* :cI=: cursor used for VI input mode */
  142. extern char    *CR;        /* :cR=: cursor used for VI replace mode */
  143. #endif
  144. extern char    *aend;        /* end an attribute -- either UE or ME */
  145. extern char    ERASEKEY;    /* taken from the ioctl structure */
  146. #ifndef NO_COLOR
  147. extern char    SOcolor[];
  148. extern char    SEcolor[];
  149. extern char    UScolor[];
  150. extern char    UEcolor[];
  151. extern char    MDcolor[];
  152. extern char    MEcolor[];
  153. extern char    AScolor[];
  154. extern char    AEcolor[];
  155. extern char    Qcolor[];
  156. # ifndef NO_POPUP
  157. extern char    POPUPcolor[];
  158. # endif
  159. # ifndef NO_VISIBLE
  160. extern char    VISIBLEcolor[];
  161. # endif
  162. extern char    normalcolor[];
  163. #endif /* undef NO_COLOR */
  164.  
  165. extern int canvi;    /* boolean: know enough to support visual mode? */
  166.  
  167. /* Msdos-versions may use bios; others always termcap.
  168.  * Will emit some 'code has no effect' warnings in unix.
  169.  */
  170.  
  171. #if MSDOS
  172. extern char o_pcbios[1];        /* BAH! */
  173. #define    CHECKBIOS(x,y)    (*o_pcbios ? (x) : (y))
  174. #define VOIDBIOS(x,y)    {if (*o_pcbios) {x;} else {y;}}
  175. #else
  176. #define    CHECKBIOS(x,y)    (y)
  177. #define VOIDBIOS(x,y)    {y;}
  178. #endif
  179.  
  180. #ifndef NO_COLOR
  181. extern int    bioscolor P_((int,int));
  182. extern int    biosquit P_((void));
  183. # define setcolor(m,a)    CHECKBIOS(bioscolor(m,a), ansicolor(m,a))
  184. # define fixcolor()    VOIDBIOS(;, tputs(normalcolor, 1, faddch))
  185. # define quitcolor()    CHECKBIOS(biosquit(), ansiquit())
  186. # define do_SO()    VOIDBIOS((vmode=A_STANDOUT), tputs(SOcolor, 1, faddch))
  187. # define do_SE()    VOIDBIOS((vmode=A_NORMAL), tputs(SEcolor, 1, faddch))
  188. # define do_US()    VOIDBIOS((vmode=A_UNDERLINE), tputs(UScolor, 1, faddch))
  189. # define do_UE()    VOIDBIOS((vmode=A_NORMAL), tputs(UEcolor, 1, faddch))
  190. # define do_MD()    VOIDBIOS((vmode=A_BOLD), tputs(MDcolor, 1, faddch))
  191. # define do_ME()    VOIDBIOS((vmode=A_NORMAL), tputs(MEcolor, 1, faddch))
  192. # define do_AS()    VOIDBIOS((vmode=A_ALTCHARSET), tputs(AScolor, 1, faddch))
  193. # define do_AE()    VOIDBIOS((vmode=A_NORMAL), tputs(AEcolor, 1, faddch))
  194. # define do_POPUP()    VOIDBIOS((vmode=A_POPUP), tputs(POPUPcolor, 1, faddch))
  195. # define do_VISIBLE()    VOIDBIOS((vmode=A_VISIBLE), tputs(VISIBLEcolor, 1, faddch))
  196. #else
  197. # define do_SO()    VOIDBIOS((vmode=A_STANDOUT), tputs(SO, 1, faddch))
  198. # define do_SE()    VOIDBIOS((vmode=A_NORMAL), tputs(SE, 1, faddch))
  199. # define do_US()    VOIDBIOS((vmode=A_UNDERLINE), tputs(US, 1, faddch))
  200. # define do_UE()    VOIDBIOS((vmode=A_NORMAL), tputs(UE, 1, faddch))
  201. # define do_MD()    VOIDBIOS((vmode=A_BOLD), tputs(MD, 1, faddch))
  202. # define do_ME()    VOIDBIOS((vmode=A_NORMAL), tputs(ME, 1, faddch))
  203. # define do_AS()    VOIDBIOS((vmode=A_ALTCHARSET), tputs(AS, 1, faddch))
  204. # define do_AE()    VOIDBIOS((vmode=A_NORMAL), tputs(AE, 1, faddch))
  205. # define do_POPUP()    VOIDBIOS((vmode=A_POPUP), tputs(SO, 1, faddch))
  206. # define do_VISIBLE()    VOIDBIOS((vmode=A_VISIBLE), tputs(MV, 1, faddch))
  207. #endif
  208.  
  209. #define    do_VB()        VOIDBIOS(;, tputs(VB, 1, faddch))
  210. #define    do_UP()        VOIDBIOS(v_up(), tputs(UP, 1, faddch))
  211. #undef    do_CM        /* move */
  212. #define    do_CE()        VOIDBIOS(v_ce(), tputs(CE, 1, faddch))
  213. #define    do_CD()        VOIDBIOS(v_cd(), tputs(CD, 1, faddch))
  214. #define    do_AL()        VOIDBIOS(v_al(), tputs(AL, LINES, faddch))
  215. #define    do_DL()        VOIDBIOS(v_dl(), tputs(DL, LINES, faddch))
  216. #if OS2
  217. # define do_SR()    if (*o_viomode) v_sr(); else tputs(SR, 1, faddch)
  218. #else
  219. # if OSK
  220. #  define do_SR()    VOIDBIOS(v_sr(), tputs(SR_, 1, faddch))
  221. # else
  222. #  define do_SR()    VOIDBIOS(v_sr(), tputs(SR, 1, faddch))
  223. # endif
  224. #endif
  225. #define do_KS()        VOIDBIOS(1, tputs(KS, 1, faddch))
  226. #define do_KE()        VOIDBIOS(1, tputs(KE, 1, faddch))
  227. #define    do_IM()        VOIDBIOS(;, tputs(IM, 1, faddch))
  228. #define    do_IC()        VOIDBIOS(;, tputs(IC, 1, faddch))
  229. #define    do_EI()        VOIDBIOS(;, tputs(EI, 1, faddch))
  230. #define    do_DC()        VOIDBIOS(;, tputs(DC, COLS, faddch))
  231. #define    do_TI()        VOIDBIOS(;, (void)ttywrite(TI, (unsigned)strlen(TI)))
  232. #define    do_TE()        VOIDBIOS(;, (void)ttywrite(TE, (unsigned)strlen(TE)))
  233. #ifndef NO_CURSORSHAPE
  234.